<?php
/**
 * Author:  ewen
 */

namespace app\api\controller;

use app\common\model\Common;
use think\Controller;
use think\Session;

class Base extends Controller
{
    protected $uid;
    protected $sign;
    protected $per;
    protected $lang;//当前语言：zh.中文；en.英文；

    /**
     * 析构函数
     */
    function __construct()
    {
        Session::start();
        header("Cache-control: private");  // history.back返回后输入框值丢失问题
        parent::__construct();

        //  语言包
        $lang = new GetLang();
        $now_lang = $lang->get_lang();//获取当前语言
        if ($now_lang == 'zh-cn') {
            $now_lang = 'en-us';
        } elseif ($now_lang == 'en-us') {
            $now_lang = 'zh-cn';
        }
        $this->assign('set_lang', $now_lang);
    }

    /*
     * 初始化操作
     */
    public function _initialize()
    {
        //  不需要校验签名的行为
        if (!in_array(MODULE_NAME . '-' . ACTION_NAME, [
//            'Index-index'
        ])) {
            $this->uid = I('uid/d', 0);
            $this->sign = I('sign/s', '');
            $this->per = I('per/d', Common::DEFAULT_PER_PAGE);
            $this->lang = I('lang/s', 'zh-cn');//当前语言：zh.中文；en.英文；
            !$this->uid && backError(lang('invalid user id'));
            //  校验签名
            $this->checkSign();
        }
    }

    /**
     * sign加密
     * 接口验证方式：md5加密用户ID+双方约定密码后再进行md5加密组成sign字段 传给后台  后台进行校验
     * @return string
     */
    public function getSign()
    {
        $salt = config('queue.salt');
        $sign = md5(md5($this->uid) . $salt);
        return $sign;
//        d4a29f79271d1cf90fe2bf195a99c1ac;23556
    }

    /**
     * 校验sign
     */
    public function checkSign()
    {
        $localSign = $this->getSign();
        $localSign !== $this->sign && backError(lang('invalid sign data'));
    }

}